home *** CD-ROM | disk | FTP | other *** search
- /*
- * Userdragbox.c
- */
-
- #define QUserdragbox
-
- #include "QMain.h"
- #include "QUserdragbox.h"
- #include "QFrceselrdrw.h"
- #include "QInitialise.h"
- #include "QDataload.h"
-
- #include "os.h"
-
- void Userdragbox(wimp_block *Block)
- {
- int i, j, view, mine, nl;
- wimp_message message;
- /* int selmin, selmax, OSelstart, OSelend;
-
- selmin=Block->dragged.final.y0;
- selmax=Block->dragged.final.y1;
- Block->open.w=Drag_w;
- wimp_get_window_state((wimp_window_state *) &(Block->open));
- OSelstart=Selectionstart;
- OSelend=Selectionend;
- Selectionstart=(0-Block->open.yscroll+(Block->open.visible.y1-selmax));
- Selectionend=(0-Block->open.yscroll+(Block->open.visible.y1-selmin));
- ForceSelectionRedraw(OSelstart, OSelend);*/
- Mask=Mask | wimp_MASK_NULL;
- switch (dragtype) {
- case drag_NONE:
- break;
- case drag_SAVE:
- wimp_get_pointer_info(&(Block->pointer));
- mine=FALSE;
- for (view=0; view<MaxViewers; view++)
- if (Block->pointer.w==Viewers[view]) mine=TRUE;
- if (Block->pointer.w==SaveHandle) mine=TRUE;
- if (!mine) {
- message.size=256;
- message.your_ref=0;
- message.action=message_DATA_SAVE;
- message.data.data_xfer.w=Block->pointer.w;
- message.data.data_xfer.i=Block->pointer.i;
- message.data.data_xfer.pos=Block->pointer.pos;
- if (Savetype == Selected) {
- nl=Selectionend-Selectionstart;
- } else {
- nl=Loadedsize/4;
- }
- /* number of instructions at 60 chars per line */
- message.data.data_xfer.est_size=nl*60;
- message.data.data_xfer.file_type=0xFFF;
- for (i=0, j=0; filenameptr[i]>31; i++) {
- message.data.data_xfer.file_name[j]=filenameptr[i];
- if ((filenameptr[i]==':') || (filenameptr[i]=='.')) {
- j=0;
- } else {
- j++;
- }
- }
- message.data.data_xfer.file_name[j]=0;
- wimp_send_message_to_window(wimp_USER_MESSAGE_RECORDED,
- &message, Block->pointer.w, Block->pointer.i);
- saveref=message.my_ref;
- }
- break;
- case drag_SELECTION:
- Drag_w=(wimp_w) NULL;
- break;
- default:
- break;
- }
- dragtype=drag_NONE;
- }
-
-